package Stream流;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

public class 收集方法 {
    public static void main(String[] args) {
        //创建一个集合
        ArrayList<String> array=new ArrayList<>();
        Collections.addAll(array,"张无忌-男-20","周芷若-女-23",
                "赵敏-女-19","张强-男-22","张三丰-男-23",
                "张翠山-男-14","张良-男-45","王二麻子-男-23","谢广坤-男-45");

        //收集到List集合当中
        //需求:收集所有的男性
        List<String> newlist = array.stream().filter(s -> s.split("-")[1].equals("男"))
                .collect(Collectors.toList());
        System.out.println(newlist);
        Set<String> newSet = array.stream().filter(s -> s.split("-")[1].equals("男")).collect(Collectors.toSet());
        System.out.println(newSet);

        //map
        //规定键和值
        //收集所有的男性,键:姓名,值:年龄
        //Function中第一个参数表示流的类型,第二参数开始表示键的类型,第二次表示值值的类型.
        Map<String, String> arryMap = array.stream().filter(s -> s.split("-")[1].equals("男"))

                /*
                toMAP:参数一:表示键的生成规则
                      参数二:表示值得生成规则
                参数一:
                Function泛型一:依次表示流中每一个数据类型
                        泛型二:表示Map集合中键的数据类型

                方法apply形参:依次表示流里面的每一个数据
                        方法体:生成键的代码
                        返回值:已经生成的键
                参数二泛型二:表示流中每一个数据的类型
                     泛型二:
                方法apply形参:依次表示流里面的每一个数据
                        方法体:生成值的代码
                        返回值:已经生成的值

                 */
                .collect(Collectors.toMap(new Function<String, String>() {
                    @Override
                    public String apply(String s) {
                        return s.split("-")[0];
                    }
                }, new Function<String, String>() {
                    @Override
                    public String apply(String s) {
                        return s.split("-")[2];
                    }
                }));
        System.out.println(arryMap);



    }
}
